package com.ec.cr.controller;

import com.ec.cr.domain.dto.ManufacturerRatioDTO;
import com.ec.cr.domain.dto.PriceTrendDTO;
import com.ec.cr.domain.dto.StatsDTO;
import com.ec.cr.domain.entity.MedicineInfo;
import com.ec.cr.service.MedicineInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;
import java.util.Map;

/**
 * 药品信息接口控制器
 */


@RestController
@RequestMapping("/api/medicine/info")
public class MedicineInfoController {

    @Autowired
    private MedicineInfoService medicineInfoService;

    /**
     * 模糊搜索药品名称（用于下拉远程搜索）
     * 示例：GET /api/medicine/info/search?keyword=感冒
     */
    @GetMapping("/search")
    public List<MedicineInfo> searchMedicine(@RequestParam(required = false) String keyword) {
        System.out.println("== 接收到 /medicine/info/search 请求，关键词 = " + keyword);
        return medicineInfoService.searchByName(keyword);
    }

    // 分页 + 模糊查询
    @GetMapping("/list")
    public Map<String, Object> list(
            @RequestParam(defaultValue = "1") int page,
            @RequestParam(defaultValue = "10") int pageSize,
            @RequestParam(required = false) String name
    ) {
        return medicineInfoService.selectPageList(page, pageSize, name);
    }

    // 新增
    @PostMapping("/add")
    public String add(@RequestBody MedicineInfo drug) {
        medicineInfoService.insert(drug);
        return "添加成功";
    }

    // 更新
    @PutMapping("/update")
    public String update(@RequestBody MedicineInfo drug) {
        medicineInfoService.update(drug);
        return "更新成功";
    }

    // 删除
    @DeleteMapping("/delete/{id}")
    public String delete(@PathVariable Long id) {
        medicineInfoService.delete(id);
        return "删除成功";
    }

    /** 1. 统计：总量 / 平均 / 最高 / 最低 */
    @GetMapping("/stats")
    public StatsDTO stats() {
        return medicineInfoService.calcStats();
    }

    /** 2. 价格趋势（按日平均价） */
    @GetMapping("/price-trend")
    public List<PriceTrendDTO> priceTrend() {
        return medicineInfoService.getPriceTrend();
    }

    /** 3. 生产厂家占比 */
    @GetMapping("/manufacturer-ratio")
    public List<ManufacturerRatioDTO> manufacturerRatio() {
        return medicineInfoService.getManufacturerRatio();
    }




}
